require("judge");
require("find");
require("otherTask");

function 妖怪发现(task)
printLog("妖怪发现任务");


if isPage("探索页面") then
  --进入对应的章节
  findChapter(task.chapter);
  
  mSleep(2000);
  --判断是否是探索或挑战弹出框
  if isExplorationAlert() then
    --选择 困难  或者  普通
    --tap(583,389);	--普通
    tap(841,377);	--困难
    mSleep(800);
    
    --组队或探索
    if task.makeTeam then
      --选择组队
      tap(1079,913);
      mSleep(1000);
      
      --选择好友
      tap(893,222);
      mSleep(1000);
      
      --只选择指定好友邀请
      local tapX, tapY = findTargetFriend();
      if tapX ~= -1 then
        tap(tapX, tapY);
        mSleep(1000);
        
        --选择邀请 需要等待好友
        tap(1343,984);
        mSleep(10000);
      else
        tap(862,987);--取消
        mSleep(1000);
      end
    else
      --选择探索
      tap(1635,922);
    end
  end
end

--如果是在妖怪发现副本里面， 需要根据情况退出
if isPage("妖怪发现副本") then
  
  --自动领取宝箱
  findReward();
  
  
  --判断体力是否够用
  
  
  --探索副本妖怪
  for tmpi=1,6 do
    
    local x, y = findMonster(task.fightType, task.attackBoss);
    if x ~= -1 and y ~= -1 then
      tap(x,y);
      mSleep(1000);
      return;
    else
      if tmpi <= 3 then
        --左滑
        swip(2100,300, 1000,300);
        mSleep(200);
      else
        --右滑
        swip(1000,300, 2100,300);
        mSleep(200);
      end
    end
  end
  
  
  
  --领取完宝箱之后，判断是否还在妖怪发现副本
  if isPage("妖怪发现副本") then
    --再次自动领取宝箱，防止漏领
    findReward();
    
    tap(84, 110);
    mSleep(1000);
    
    tap(1341, 701);
    mSleep(1000);
  end
  
  --任务结算
  removeFindMonsterTask(task);  
  
end
end


function 只做封任务(task)
printLog("妖怪发现任务");

if isPage("探索页面") then
  --进入对应的章节
  findChapter(task.chapter);
  
  printLog("测试到这里");
  
  mSleep(2000);
  --判断是否是探索或挑战弹出框
  if isExplorationAlert() then
    --选择 困难  或者  普通
    --tap(583,389);	--普通
    tap(841,377);	--困难
    mSleep(800);
    
    --组队或探索
    if task.makeTeam then
      --选择组队
      tap(1079,913);
      mSleep(1000);
      
      --选择好友
      tap(893,222);
      mSleep(1000);
      
      --只选择指定好友邀请
      local tapX, tapY = findTargetFriend();
      if tapX ~= -1 then
        tap(tapX, tapY);
        mSleep(1000);
        
        --选择邀请 需要等待好友10秒
        tap(1343,984);
        mSleep(10000);
      else
        tap(862,987);--取消
        mSleep(1000);
      end
    else
      --选择探索
      tap(1635,922);
    end
  end
end

--如果是在妖怪发现副本里面， 需要根据情况退出
if isPage("妖怪发现副本") then
  
  --自动领取宝箱
  findReward();
  
  
  --探索副本妖怪
  printLog("```````````````开始探索妖怪");
  for tmpi=1,6 do
    
    local x, y = findMonster(task.fightType, task.attackBoss);
    if x ~= -1 and y ~= -1 then
      tap(x,y);
      mSleep(1000);
      
      --修改是否找到标志
      task.hasTask = true;
      return;
    else
      if tmpi <= 3 then
        --左滑
        swip(2100,300, 1000,300);
        mSleep(1000);
      else
        --右滑
        swip(1000,300, 2100,300);
        mSleep(1000);
      end
    end
  end
  printLog("```````````````结束探索妖怪");
  
  
  --领取完宝箱之后，判断是否还在妖怪发现副本
  if isPage("妖怪发现副本") then
    --自动领取宝箱
    findReward();
    
    tap(84, 110);
    mSleep(1000);
    
    tap(1341, 701);
    mSleep(1000);
  end
  
  --任务结算
  removeFengTask(task);
  
end
end


function 只接受邀请(task)

printLog("只接受邀请任务");

--接受邀请
if isReceivedInvitation() then
  
  tap(242, 451);
  mSleep(2000);
  
  --可能是需要注销账号 （解决您已经在队伍中了的问题）
--[[ 
 if isPage("庭院") then
    reLogin();
  elseif isPage("探索页面") then
    reLogin();
  end
  --]]
  return;
end

--如果是在妖怪发现副本里面， 需要根据情况退出
if isPage("妖怪发现副本") then
  --标记可以更换狗粮
  task.canChangeFull = true;
  
  if not isTeam() then
    --没有在队伍中
    
    --标记不可以更换狗粮
    task.canChangeFull = false;
    
    --等待3秒，发现宝箱
    mSleep(3000);
    --自动领取宝箱
    findReward();
    
    if isPage("妖怪发现副本") then
      
      findReward();
      
      tap(84, 110);
      mSleep(1000);
      
      tap(1341, 701);
      mSleep(1000);
    end
  end
end
end


function 个人突破 (task) 
--个人
tap(2126,373);
mSleep(1000);

--在突破页面判断是否有突破券
if not isHasBreakTicketInBreakPage() then
  printLog("突破券不足");
  
  --调整任务时间
  task.beginTime = os.time() + 60 * 60;
  task.isWorking = false;
  showHUD(infoHUD,"个人结界突破暂停,等待 60 分钟",18,"0xffff0000","0xffffffff",0,0,0,300,44);
  --离开结界突破页面 对任务重新排序
  tap(2039,120);
  mSleep(500);
  return;
end

--打未打过的， 如果没有未打过的，判断刷新按钮是否可点击， 可以点击则刷新。否则调整任务开始时间
--测试个人 0,1,2,3,4,5
local hasFindToAttack = false;
for tmpi=0, task.maxHonor do
  local  x, y = findHonor(tmpi, 222,152,1986,845);
  printLog("找有"..tmpi.."个勋章位置: x = "..x.."  y = "..y);
  
  if x > -1 then
    tap(x,y);
    mSleep(1000);
    hasFindToAttack = true;
    break;
  end
end

if hasFindToAttack then
  
  --找到了需要攻击的结界
  local x, y = findButton("攻击");
  printLog("攻击按钮的位置是：x = "..x.."  y = "..y);
  if x > -1 then
    tap(x, y);
    mSleep(2000);
  end
  
else
  
  --找不到未打过的, 尝试刷新
  local x, y = findButton("刷新");
  if x > -1 then
    --点击刷新
    tap(x, y);
    mSleep(1000);
    tap(1314,746);
    mSleep(1000);
    return;
  else 
    --调整任务时间
    task.beginTime = os.time() + 60 * 10;
    task.isWorking = false;
    showHUD(infoHUD,"个人结界突破暂停,等待 10 分钟",18,"0xffff0000","0xffffffff",0,0,0,200,44);
    --离开结界突破页面 对任务重新排序
    tap(2039,120);
    mSleep(1000);
    return;
  end
  
end
end


function 工会突破 (task)

--选择阴阳寮
tap(2119,579);
mSleep(1000);


local indexMax = 3;
if task.makeTeam then
  indexMax = 6;
end

--判断阴阳寮是否开放，如果未开放index = 7
if getColor(547,196) == 0x7a634c  or getColor(535,519) == 0xcbc0b4  or getColor(549,837) == 0xcbc0b4 then 
	indexMax = 7;
end

--是否需要调整任务时间
if task.index > indexMax then
  task.index = 1;
  --调整任务时间
  task.beginTime = os.time() + 60 * 10 - indexMax * 30;
  
  task.isWorking = false;
  --离开结界突破页面 对任务重新排序
  tap(2039,120);
  mSleep(1000);
  return;
end


--选择要攻击的阴阳寮
if task.index == 1 or task.index == 4 then
  --第一个阴阳寮
  tap(501,312);
  mSleep(1000);
elseif task.index == 2 or task.index == 5 then
  --第二个阴阳寮
  tap(485,622);
  mSleep(1000);
elseif task.index == 3 or task.index == 6 then
  --第三个阴阳寮
  tap(491,923);
  mSleep(1000);	
end

--调整下次需要攻打的阴阳寮
task.index = task.index + 1;



--只打勋章少于5，且未打过的。
--测试工会 0,1,2,3,4,5
local hasFindToAttack = false;

--最多向上滑动3次
for tmpi=1,4 do
  
  for tmpi=0,task.maxHonor do
    
    local x, y = findHonor(tmpi, 820,185,1990,1153);
    printLog("找有"..tmpi.."个勋章位置: x = "..x.."  y = "..y);
    
    if x > -1 then
      tap(x,y);
      mSleep(1000);
      hasFindToAttack = true;
      break;
    end
  end
  
  if hasFindToAttack then
    break;
  else
    swip(1407,1000, 1404,220);
    mSleep(1000);
  end
end



if hasFindToAttack then
  
  --判断是否是攻击或组队弹出框
  local x, y = findButton("攻击");
  printLog("攻击按钮的位置是：x = "..x.."  y = "..y);
  if x > -1 then
    tap(x, y);
    mSleep(2000);
    
  elseif task.makeTeam then
    
    local x0, y0 = findButton("组队");
    printLog("组队按钮的位置是：x = "..x0.."  y = "..y0);
    
    if x0 > -1 then
      tap(x0, y0);
      mSleep(2000);		
      
      if isPage("协战队伍") then
        invateFriendFight();
      end
    end
    
  else
    
    tap(2192,1216);
    mSleep(1000);
  end
end
end


function 结界突破 (task, subName)

--判断当前所在页面
if isPage("结界突破") then
  
  if subName == "个人" then
    个人突破(task);
    
  elseif subName == "工会" then
    工会突破(task);
    
  end  
end
end



function 自动御魂 (task)
--默认已经进入到了御魂界面
printLog("开始自动御魂副本");

if isPage("御魂") then
  
  --选择 八岐大蛇 或者 业原火
  
  if task.name == "八岐大蛇" then
    
    --"八岐大蛇"
    tap(838,1085);
    mSleep(1000);
    
    --选择章节
    local x, y = findSnakeChapter(task.chapter);
    if x > -1 then
      tap(x, y);
      mSleep(1000);
    end
    
  elseif task.name == "打业原火" then
    
    --"业原火"
    tap(1291,1093);
    mSleep(1000);
    
    --选择章节
    local x,y = findYeyuanhuoChapter(task.chapter);
    if x > -1 then
      tap(x, y);
      mSleep(1000);
    end
  end
  
  
  --判断是组队还是个人
  if task.makeTeam then
    tap(1108,857);
    mSleep(1000);
  else
    tap(1654,840);
    mSleep(1000);
  end
end

--进入组队页面
if isPage("组队") then
  tap(1791,1086);--点击创建队伍
  mSleep(1000);
  
end

--创建确认页面
if isPage("组队确认") then
  
  if shouldInvateFriend then 
    tap(1315,894);--仅邀请
    --tap(849,892);
    mSleep(500);
  else
    tap(539,887); --所有人可见
    mSleep(500);
  end
  
  --调整等级范围
  findTargetLevel(task.taskminLevel);
  
  tap(1568,991);--创建
  --tap(698,1002);--取消
  mSleep(500);
  
end


--开始邀请指定好友
if isPage("协战队伍") then
  invateFriendFight();
end

end

function 自动觉醒 (task)
--默认已经进入到了御魂界面
printLog("开始自动觉醒副本");
if isPage("觉醒") then
  
  --选择 火 风 水 雷
  if task.taskType == "火麒麟" then
    tap(539,1090);
    mSleep(1000);
  elseif task.taskType == "风麒麟" then
    tap(936,1087);
    mSleep(1000);
  elseif task.taskType == "水麒麟" then
    tap(1311,1082);
    mSleep(1000);
  elseif task.taskType == "雷麒麟" then
    tap(1694,1088);
    mSleep(1000);
  end
  
  --选择章节
  local x, y = findSnakeChapter(task.chapter);
  if x > -1 then
    tap(x, y);
    mSleep(1000);
  end
  
  --判断是组队还是个人
  if task.makeTeam then
    tap(1108,857);
    mSleep(1000);
  else
    tap(1654,840);
    mSleep(1000);
  end
end


--进入组队页面
if isPage("组队") then
  tap(1791,1086);--点击创建队伍
  mSleep(1000);
  
end

--创建确认页面
if isPage("组队确认") then
  
  if shouldInvateFriend then 
    tap(1315,894);--仅邀请
    --tap(849,892);
    mSleep(500);
  else
    tap(539,887); --所有人可见
    mSleep(500);
  end
  
  --调整等级范围
  findTargetLevel(task.taskminLevel);
  
  tap(1568,991);--创建
  --tap(698,1002);--取消
  mSleep(500);
  
end

--开始邀请指定好友
if isPage("协战队伍") then
  invateFriendFight();
end
end

function 挤队伍 (task)
--默认已经在组队页面

local sortName = "";
if task.name == "自动石距" then
  sortName = "石距";
elseif task.name == "自动年兽" then
  sortName = "年兽";
else
  sortName = task.name;
end

printLog("开始挤队伍~~~");
printTable(task);

while isPage("组队") do
  --查找队伍分类的位置 
  local sortX, sortY = findTeamSort(sortName);
  if sortX > -1 then
    tap(sortX, sortY);
    mSleep(300);
  end
  
  while hasTapJoinInTeam(task.teamArray) do
    printLog("继续判断");
  end
end
end


function 自动斗技(task)
	--默认已经进入到了斗技页面
	
	if isPage("斗技") then
	--如果已经过了斗技时间，则结束斗技任务
		local hour = tonumber(os.date("%H"));
		local minute = tonumber(os.date("%M"));
		
		
		printLog("现在时间是："..hour)
		if hour ~= 12 and hour ~= 21 then
			printLog("现在不是斗技时间");
			
			--调整任务开始时间
			
			local remainHour = 0;
			if hour > 11 then
				remainHour = 20 - hour;
			else
				remainHour = 11 - hour;
			end
			task.beginTime = os.time() + (60 - minute) * 60 + 60 * 60 * remainHour;

			task.isWorking = false;
			showHUD(infoHUD,"斗技时间已过，正在重新安排任务",18,"0xffff0000","0xffffffff",0,0,0,300,44);
			--离开结界突破页面 对任务重新排序
			
			--关闭斗技页面按钮
			tap(2034,134);
			mSleep(1000);
		else
			tap(1930,1028);
			mSleep(4000);
		end
	end
end